package com.homework.papertexting.service;

import com.homework.papertexting.model.User; // 引入你的 User 类
import com.homework.papertexting.repository.UserRepository; // 引入你的 UserRepository
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service; // 引入 Service 注解

// 移除 ArrayList 的导入，因为它不再需要
// import java.util.ArrayList; // 用于创建空的权限列表

@Service // 标记为 Service，让 Spring 管理
public class UserDetailsServiceImpl implements UserDetailsService {

    @Autowired
    private UserRepository userRepository; // 注入 UserRepository

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 从数据库中查找用户
        User user = userRepository.findByUsername(username)
                .orElseThrow(() -> new UsernameNotFoundException("User not found with username: " + username));

        // >>> 直接返回从数据库查到的 User 对象 >>>
        // 将你的 User 对象转换为 Spring Security 的 UserDetails 对象
        // 这里我们只使用了用户名和密码，权限列表暂时为空
        // 实际项目中，你需要根据你的用户模型添加角色/权限
        // 之前的代码是这里创建了 Spring Security 内置的 User 对象：
//        return new org.springframework.security.core.userdetails.User(
//                user.getUsername(),
//                user.getPassword(),
//                new ArrayList<>() // 权限列表，暂时为空
//        );

        // 修改为直接返回从数据库查到的 User 对象：
        return user;
        // <<< 直接返回从数据库查到的 User 对象结束 <<<\n
    }
}